<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			/**
			 * 对应名称
			 * - prototype：原型
			 * - __proto__：原型链（链接点）
			 * 
			 * 从属关系
			 * prototype -> 函数的一个属性：对象{}
			 * __proto__ -> 对象Object的一个属性：对象{}
			 * 对象的__proto__保存着该对象的构造函数的prototype
			 */
			function Test() {
				this.a = 1;
			}
			console.log(Test.prototype); //{constructor: ƒ}
			Test.prototype.b = 2;
			const test = new Test();
			console.log(test.__proto__); //{constructor: ƒ}
			console.log(test.__proto__ === Test.prototype); //true
			console.log(Test.prototype.__proto__ == Object.prototype); //true
			console.log(Object.prototype.__proto__); //null 可以说Object就是原型链的顶端
			Object.prototype.c = 3;
			/**
			 * test {
			 * 	a:1,
			 *  __proto__: Text.prototype = {
			 * 		b:2,
			 *    __proto__: Object.prototype = {
			 * 			c:3
			 * 		}
			 *  }
			 * }
			 * 原型链：一个对象test为基准，__proto__为链接点的这条链条一直到Object.protype为止的这条链
			 */
			console.log(test.a); //1
			console.log(test.b); //2
			console.log(test.c); //3
		</script>
	</body>
</html>
